package vip.liux.backend.application.service.point;


import lombok.Getter;
import lombok.Setter;
import vip.liux.backend.application.service.customer.CustomerDto;
import vip.liux.contracts.shared.enums.point.TransactionStatus;
import vip.liux.domain.entities.auditing.CreationAuditedEntity;

import java.math.BigDecimal;

/**
 * 积分交易数据传输对象
 */
@Setter
@Getter
public class PointsTransactionDto extends CreationAuditedEntity<Long> {
    /**
     * 用户ID
     * 表示交易所属的用户，与数据库中的user_id字段映射。
     */
    private Long userId;

    /**
     * 用户信息
     */
    public CustomerDto user;

    /**
     * 积分交易规则
     */
    private String ruleCode;

    /**
     * 交易流水号
     * 表示本次交易的唯一标识符。
     */
    private String transactionNo;

    /**
     * 关联业务单号
     * 表示与本次交易相关的业务单号，例如订单号。
     */
    private String relatedNo;

    /**
     * 交易状态
     * 0-已完成 1-已退款
     */
    private TransactionStatus status;

    /**
     * 交易描述
     * 表示本次交易的详细描述信息。
     */
    private String description;

    /**
     * 交易失败原因
     * 表示交易失败时的原因信息。
     */
    private String failedReason;
    /**
     * 变动积分
     * 表示本次交易的积分变动数量，正数表示增加，负数表示减少。
     */
    private BigDecimal points;
}
